


/*Scrivere un programma che, caricata random una matrice N*N, e con un menù,
1)Carica
2)Stampa
3)Somma se stessa in un'altra matrice
4)Somma la matrice più la matrice trasposta
5)Cerca occorrenze nella prima
*/

#include <iostream>
#include <string>
#include <time.h>
#include <string>
#define LEN 5

using namespace std;

void menu();
void carica(int matrice[][LEN]);
void stampa(int matrice[][LEN]);
void sommamx(int matrice[][LEN], int matrice2[][LEN]);
void trasposta(int mattemp[][LEN]);
void sommamxt(int matrice[][LEN], int matrice2[][LEN]);
void cerca(int matrice[][LEN]);


main()
{
    srand(time(NULL));
    menu();
    system("pause");
    return 0;
}

void menu()
{
    int scelta;
    int matt[LEN][LEN];
    int ricks[LEN][LEN];
    int mattemp[LEN][LEN];
    do
    {
        printf("1. Carica\n");
        printf("2. Stampa\n");
        printf("3. Somma se stessa in un'altra matrice\n");
        printf("4. Somma se stessa nella matrice trasposta\n");
        printf("5. Ricerca\n");
        cin>>scelta;
        switch(scelta)
        {
            case 1:
            carica(matt);
            break;
            case 2:
            stampa(matt);
            break;
            case 3:
            sommamx(matt, ricks);
            break;
            case 4:
            carica(mattemp);
            trasposta(mattemp);
            sommamxt(matt, ricks);
            break;
            case 5:
            cerca(matt);
            break;
        }
    }while(scelta!=0);
}

void carica(int matrice[][LEN])
{
for(int j=0;j<LEN;j++)
for(int i=0;i<LEN;i++)
matrice[j][i]=rand()%3;
}

void stampa(int matrice[][LEN])
{
for(int j=0;j<LEN;j++)
{   
    for(int i=0;i<LEN;i++)
    {
        printf("%d ", matrice[j][i]);
    }
    printf("\n");
}
}

void sommamx(int matrice[][LEN], int matrice2[][LEN])
{
    for(int j=0;j<LEN;j++)
    for(int i=0;i<LEN;i++)
    matrice2[j][i]=2*matrice[j][i];
}

void trasposta(int mattemp[][LEN])
{
    int temp;
    for(int j=0;j<LEN;j++)
{   
    for(int i=j;i<LEN;i++)
    {
        temp=mattemp[i][j];
        mattemp[i][j]=mattemp[j][i];
        mattemp[j][i]=temp;
    }
}
}

void sommamxt(int matrice[][LEN], int matrice2[][LEN])
{
    for(int j=0;j<LEN;j++)
    for(int i=0;i<LEN;i++)
    matrice[j][i]=matrice[j][i]+matrice2[j][i];
}

void cerca(int matrice[][LEN])
{
    int n;
    printf("Inserisci il numero da cercare\n");
    cin>>n;
    for(int j=0;j<LEN;j++)
    {   
    for(int i=0;i<LEN;i++)
    {
    if(matrice[j][i]==n)
    printf("L'elemento è presente nella matrice\n");
    }
    }    
}